/**
 * 缓存相关常量定义
 * 统一管理应用中的缓存键和缓存时间
 */

/**
 * 缓存键常量
 * 用于统一存储和获取缓存数据的key
 */
export const CACHE_KEYS = {
  // 用户信息相关
  USER_INFO: 'user_info',
  USER_PROFILE: 'user_profile',
  USER_STATS: 'user_stats',
  USER_PERMISSIONS: 'user_permissions',
  
  // 系统配置相关
  SYSTEM_DICT: 'system_dict',
  SYSTEM_CONFIG: 'system_config',
  APP_VERSION: 'app_version',
  
  // API缓存相关
  API_CACHE: 'api_cache',
  DICT_CACHE: 'dict_cache',
  DEPT_CACHE: 'dept_cache',
  POST_CACHE: 'post_cache',
  
  // 临时缓存
  SEARCH_HISTORY: 'search_history',
  FORM_DRAFT: 'form_draft',
  
  // 设置相关
  USER_SETTINGS: 'user_settings',
  APP_THEME: 'app_theme',
  LANGUAGE: 'language'
};

/**
 * 缓存时长常量（毫秒）
 * 定义各类缓存数据的过期时间
 */
export const CACHE_DURATION = {
  // 用户信息缓存 - 延长至2天避免频繁登录
  USER_INFO: 2 * 24 * 60 * 60 * 1000,      // 2天
  USER_PROFILE: 2 * 24 * 60 * 60 * 1000,   // 2天
  USER_STATS: 2 * 24 * 60 * 60 * 1000,      // 2天
  USER_PERMISSIONS: 2 * 24 * 60 * 60 * 1000, // 2天
  
  // 系统数据缓存
  SYSTEM_DICT: 60 * 60 * 1000,    // 1小时
  SYSTEM_CONFIG: 24 * 60 * 60 * 1000, // 24小时
  APP_VERSION: 60 * 60 * 1000,    // 1小时
  
  // API数据缓存
  API_CACHE: 10 * 60 * 1000,      // 10分钟
  DICT_CACHE: 60 * 60 * 1000,     // 1小时
  DEPT_CACHE: 24 * 60 * 60 * 1000, // 24小时
  POST_CACHE: 24 * 60 * 60 * 1000, // 24小时
  
  // 临时缓存
  SEARCH_HISTORY: 7 * 24 * 60 * 60 * 1000, // 7天
  FORM_DRAFT: 24 * 60 * 60 * 1000, // 24小时
  
  // 设置缓存（长期有效）
  USER_SETTINGS: 365 * 24 * 60 * 60 * 1000, // 1年
  APP_THEME: 365 * 24 * 60 * 60 * 1000,     // 1年
  LANGUAGE: 365 * 24 * 60 * 60 * 1000        // 1年
};

/**
 * 错误消息常量
 * 统一错误提示信息
 */
export const ERROR_MESSAGES = {
  // 网络相关
  NETWORK_ERROR: '网络连接异常，请检查网络',
  NETWORK_TIMEOUT: '请求超时，请稍后重试',
  SERVER_ERROR: '服务器繁忙，请稍后重试',
  
  // 认证相关
  AUTH_ERROR: '登录状态失效，请重新登录',
  PERMISSION_DENIED: '权限不足，无法操作',
  
  // 数据相关
  DATA_NOT_FOUND: '数据不存在',
  DATA_EXPIRED: '数据已过期，请刷新重试',
  DATA_INVALID: '数据格式错误',
  
  // 用户操作相关
  OPERATION_FAILED: '操作失败，请重试',
  VALIDATION_ERROR: '输入信息有误，请检查',
  UPLOAD_FAILED: '上传失败，请重试',
  
  // 系统相关
  SYSTEM_ERROR: '系统错误，请联系管理员',
  MAINTENANCE: '系统维护中，请稍后重试'
};

/**
 * 成功消息常量
 * 统一成功提示信息
 */
export const SUCCESS_MESSAGES = {
  SAVE_SUCCESS: '保存成功',
  UPDATE_SUCCESS: '更新成功',
  DELETE_SUCCESS: '删除成功',
  UPLOAD_SUCCESS: '上传成功',
  OPERATION_SUCCESS: '操作成功',
  LOGIN_SUCCESS: '登录成功',
  LOGOUT_SUCCESS: '退出登录成功'
};

/**
 * 表单验证规则常量
 * 统一表单验证规则
 */
export const VALIDATION_RULES = {
  // 手机号验证
  PHONE: {
    pattern: /^1[3-9]\d{9}$/,
    message: '请输入正确的手机号码'
  },
  
  // 邮箱验证
  EMAIL: {
    pattern: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
    message: '请输入正确的邮箱地址'
  },
  
  // 密码验证
  PASSWORD: {
    minLength: 6,
    maxLength: 20,
    pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^\s]{6,20}$/,
    message: '密码需包含大小写字母和数字，长度6-20位'
  },
  
  // 用户名验证
  USERNAME: {
    minLength: 2,
    maxLength: 20,
    pattern: /^[\u4e00-\u9fa5a-zA-Z0-9_-]{2,20}$/,
    message: '用户名需为2-20位中英文、数字、下划线或横线'
  },
  
  // 真实姓名验证
  REAL_NAME: {
    minLength: 2,
    maxLength: 10,
    pattern: /^[\u4e00-\u9fa5]{2,10}$/,
    message: '请输入2-10位中文姓名'
  }
};

/**
 * 主题配置常量
 */
export const THEME_CONFIG = {
  // 主题色
  PRIMARY_COLOR: '#1890ff',
  SUCCESS_COLOR: '#52c41a',
  WARNING_COLOR: '#faad14',
  ERROR_COLOR: '#ff4d4f',
  INFO_COLOR: '#1890ff',
  
  // 背景色
  BG_COLOR: '#f5f5f5',
  BG_COLOR_WHITE: '#ffffff',
  BG_COLOR_GRAY: '#fafafa',
  
  // 文字色
  TEXT_COLOR_PRIMARY: '#262626',
  TEXT_COLOR_SECONDARY: '#595959',
  TEXT_COLOR_DISABLED: '#bfbfbf',
  
  // 边框色
  BORDER_COLOR: '#d9d9d9',
  BORDER_COLOR_LIGHT: '#e8e8e8'
};

/**
 * 页面路由常量
 */
export const ROUTE_PATHS = {
  // 用户相关
  MINE_INDEX: '/pages/mine/index',
  MINE_INFO: '/pages/mine/info/index',
  MINE_EDIT: '/pages/mine/info/edit',
  MINE_PWD: '/pages/mine/pwd/index',
  MINE_AVATAR: '/pages/mine/avatar/index',
  
  // 系统相关
  LOGIN: '/pages/login/index',
  
  // 功能页面
  HOME: '/pages/index/index'
};